package com.explorati.design_pattern.hybrid.commandchain;

/**
 * FileManager类负责与操作系统交互，要将UNIX的命令乔伊到Windows上运行，此时需要调用Windows的底层函数。
 * 因调用Windows的底层函数实现较复杂，所以采用实例性代码代替
 * 
 * @author explorati
 *
 */
public class FileManager {

	// ls命令
	public static String ls(String name) {
		return "file1\nfile2\nfile3\nfile4";
	}

	// ls -l 命令
	public static String ls_l(String name) {
		String str = "drw-rw-rw root system 1024 2019-6-25 15:02 file1\n";
		str = str + "drw-rw-rw root system 1024 2019-6-25 15:02 file2\n";
		str = str + "drw-rw-rw root system 1024 2019-6-25 15:02 file3\n";
		return str;
	}

	// ls -a命令
	public static String ls_a(String name) {
		String str = ".\n..\nfile1\nfile2\nfile3";
		return str;
	}
	/**
	 * 上述代码中，三种命令返回了固定的结果作为实例，如果需要真实实现，有以下三种思路：
	 * 1.通过java.io.File类自己封装类似UNIX的返回格式;
	 * 2.通过java.lang.Runtime类的exec()方法执行DOS的dir命令，产生类似的ls结果，但是格式与UNIX不同，
	 * 需要对结果进行处理 
	 * 3.通过JNI(Java Native Interface)调用Windows的系统API
	 */
}
